#include <stdio.h>
#include <math.h>
int isPrime(int n)
{
	if(n==2 || n==3 || n==5 || n==7)return 1;
	if(n%2==0 || n%3==0 || n==1)return 0;
	int i;
	for (i=5; i<=floor(sqrt(n)); i+=6) {
		if (n%i == 0 || n%(i+2)==0)return 0;
	}
	return 1;
}

int concate(int m, int n)
{
	int org = n;
	while(n) {
		m *=10;
		n /=10;
	}
	return m+org;
}

int main()
{
	int i, j, k, l, m;
	i=100000000;
	printf("%d\n", i);
	for (i=3; i<100; i+=2) {
		if (isPrime(i)) {
			for (j=i+2; j<10000; j+=2) {
				if (isPrime(j) && isPrime(concate(i, j)) && isPrime(concate(j, i))) {
					for (k=j+2; k<10000; k+=2) {
						if (isPrime(k) && isPrime(concate(i, k)) && isPrime(concate(k, i)) && isPrime(concate(j, k)) && isPrime(concate(k, j))) {
							for (l=k+2; l<10000; l+=2) {
								if (isPrime(l) && isPrime(concate(i, l)) && isPrime(concate(l, i)) && 
								    isPrime(concate(j, l)) && isPrime(concate(l, j)) && 
								    isPrime(concate(k, l)) && isPrime(concate(l, k))) {
									for (m=l+2; m<10000; m+=2) {
										if (isPrime(m)) {
											//printf("%d %d %d %d %d %d\n", i, j, k, l, m, i+j+k+l+m);
											if (isPrime(concate(i, m)) && isPrime(concate(m, i)) &&
											    isPrime(concate(j, m)) && isPrime(concate(m, j)) &&
											    isPrime(concate(k, m)) && isPrime(concate(m, k)) &&
											    isPrime(concate(l, m)) && isPrime(concate(m, l))) {
												printf("%d %d %d %d %d %d\n", i, j, k, l, m, i+j+k+l+m);
												return;
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}				
	}
}
